<?php
/**
 * Classes lightweight para a aplicação
 * @author		João Batista Neto
 * @package		rpo
 * @subpackage	swing
 */
namespace rpo\swing;

/**
 * Interface para um modelo de lista de dados
 * @author		João Batista Neto
 * @package		rpo
 * @subpackage	swing
 */
interface ListModel extends Countable {
	/**
	 * Adiciona um ouvinte que será notificado cada vez que o modelo de dados da lista mudar
	 * @param ListDataListener $l
	 */
	public function addListDataListener( ListDataListener $l );

	/**
	 * Recupera um elemento na posição $offset
	 * @param integer $offset
	 * @return Object
	 */
	public function getElementAt( $offset );

	/**
	 * Remove um ouvinte da lista
	 * @param ListDataListener $l
	 */
	public function removeListDataListener( ListDataListener $l );
}